This invention is concerned generally with magnetic tape and more particularly with a new method for error recovery in reading information from the tape.
Numerous methods are now known for detecting and recovering from errors which occur in the reading of information from magnetic tapes. Typical errors which occur are the inclusion of extra bits which are not actually present on the tape or the omission of bits which are present. These two types of errors are especially serious because they lead to loss of synchronization. Prior art techniques vary from the very simple to the most sophisticated; for example, it is possible to simply read a tape twice and compare bit by bit to detect errors. Error detection is sometimes accomplished by inclusion of a parity bit, while more sophisticated schemes utilize more complicated codes, e.g., polynomial coding schemes, for detecting and recovering from errors. Intermediate between the simple and the most complicated methods are those which include a check-sum word on the tape usually at the end of a user data block. This word typically contains the sum of the digits of the words in the data block, which sum may be compared against an actual summing of these digits performed after their having been read from the tape, to detect a discrepancy. A discrepancy between the check-sum and the actual sum indicates that an error has occurred in the reading of the tape. An inherent difficulty with this scheme is that if a discrepancy is discovered, an entire user block of data must be discarded. When lengthy data blocks are involved, or under circumstances where numerous errors are involved, or under circumstances where numerous errors are likely to occur, this is an inconvenient and a time-consuming procedure.
The present invention provides an error recovery system in which information stored on tape is segmented into partitions, each partition including a variable word length up to some predetermined maximum number of words. A check-sum word is included at the end of each partition. When "data" is to be stored, the partitions are of a particular fixed length. However, when user program lines are stored, the partitions contain some integral number of program lines. As each partition is read from the tape, a check-sum comparison is performed to detect errors. When an error is found in the reading of a particular partition, that partition is flagged and an error indication is given to the user. For example, program lines included in that one partition may be deleted from the user output table, and an error message substituted. The user is thereby alerted to the occurrence of an error while only a small amount of information is lost to his immediate access.